Stack

ویجت stack یکی از ویجت های فلاتر با کارایی بالا می‌باشد که قابلیت لایه بندی ویجت ها را در اختیار شما قرار می‌دهد
اما منظور از لایه بندی چیست؟

به طور مثال شما نیاز دارید روی یک تصویر یک متن را نمایش دهید.

با استفاده از ویجت Stack این قابلیت برا شما فراهم می‌شود که بتوانید ویجت های خود را به صورت لایه لایه روی یکدیگر قرار دهید همچنین شما می‌توانید با استفاده از ویجت positioned مکان قرار گیری ویجت ها را مشخص کنید.

 

در ادامه property های این ویجت را با هم بررسی می‌کنم و در انتها چند نمونه کد برای درک بهتر این ویجت قرار داده ایم.

 

alignment (Alignment)

این property یک ورودی از نوع Alignment میگیرد و موقعیت مکانی فرزندان این ویجت را مشخص می‌کند

Alignment فقد روی ویجت های اثر می‌‌گذارد که با ویجت position برا ان ها ست نشده باشد

 

clipBehavior (Clip)
این ویجت مشخص میکند که ویجت های فرزند بریده شوند یا خیر

 

fit (Stackfit)
این property مشخص می‌کند که فرزندانی که position برا انها تعریف نشده باشد چگونه از فضای موجود استفاده کنند.

 

textDirectoin (TextDirection)

این property مربوط به راست چین بودن و یا چپ چین بودن متن می‌باشد.

 

نمونه کد

همانطور که در کد پایین مشاهده می‌کنید ما با استفاده از ویجت Stack توانسته ایم سه Container را روی همدیگر قرار دهیم به این شکل که Container قرمز به عنوان لایه اولیه و Container با رنگ های مشکی و بنفش به ترتیب جزء لایه های بالاتر می‌باشند همچنین دو Container با رنگ های مشکی و بنفش را با استفاده از ویجت Positioned در موقعیت های مکانی متفاوت قرار داده ایم.

 

Scaffold(
          appBar: AppBar(
            title: Text('MyFlutter.ir'),
            centerTitle: true,
            backgroundColor: Colors.blueAccent[400],
          ), //AppBar
          body: Center(
            child: SizedBox(
              width: 300,
              height: 300,
              child: Center(
                child: Stack(
                  fit: StackFit.expand,
                  clipBehavior: Clip.antiAliasWithSaveLayer,
                  children: <Widget>[
                    Container(
                      width: 300,
                      height: 300,
                      color: Colors.red,
                    ), //Container
                    Positioned(
                      top: 80,
                      left: 80,
                      child: Container(
                        width: 250,
                        height: 250,
                        color: Colors.black,
                      ),
                    ), //Container
                    Positioned(
                      left: 20,
                      top: 20,
                      child: Container(
                        height: 200,
                        width: 200,
                        color: Colors.purple,
                      ),
                    ), //Container
                  ], //<Widget>[]
                ), //Stack
              ), //Center
            ), //SizedBox
          ) //Center
      ),

 

در نمونه کد پایین با استفاده از ویجت Stack یک Text را روی Image قرار داده ایم.

 

Scaffold(
          appBar: AppBar(
            backgroundColor: Colors.blueAccent[400],
          ), //AppBar
          body: Center(
            child: SizedBox(
              width: 300,
              height: 300,
              child: Center(
                child: Stack(
                  fit: StackFit.expand,
                  clipBehavior: Clip.antiAliasWithSaveLayer,
                  children: <Widget>[
                    Center(child:Image.asset("assets/images/border.png")), //Container
                    Positioned(
                      top: 125,
                      left: 80,
                      child: Text("MyFlutter.ir",style: TextStyle(fontWeight: FontWeight.w800,fontSize: 30),
                      ),
                    ), //Container
                  ], //<Widget>[]
                ), //Stack
              ), //Center
            ), //SizedBox
          ) //Center
      ),

 

جمع بندی

با استفاده از ویجت Stack شما می‌توانید ویجت ها خود را در لایه های مختلف به کار ببرید.

مقالات اخیر

نصب پلاگین فلاتر

بسیار عالی! حالا که با آموزش نصب فلاتر در سیستم عامل‌های مختلف، جلو آمدیم و فلاتر را نصب کردیم، لازم است که فلاتر را روی IDE خودمان هم نصب کنیم.

بیشتر بخوانید

پکیج تقویم شمسی persian_datetime_picker

یکی از مشکلات برنامه نویس‌های ایرانی، تاریخ شمسی می‌باشد. هنگام برنامه نویسی شما به صورت استاندارد فقط می‌توانید با تاریخ میلادی کار کنید، اما طبیعتا کاربران ایرانی عادت ندارند که

بیشتر بخوانید

ممنون که از ما حمایت می کنید!

۶۲۱۹-۸۶۱۰-۴۴۳۱-۴۶۲۲

به نام محمد غنچه - بانک سامان

:TRC-20

TXH658Q57XgJtMUpRz59b4ANRgq72VHKt5

در نهایت می تونید برای ارسال رسید یا هر سوال و هماهنگی دیگری با من ارتباط برقرار کنید: ۰۹۰۴۴۰۳۹۱۵۳